/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package simulator;

/**
 *
 * @author Administrador
 */
abstract class Scheduler {
    protected ProcessControllBlock emptyProcess;
    public ProcessControllBlock nextJob(ProcessControllBlock runningJob){//Template method
        storeRunningJob(runningJob);
        return getNextJob();
    }
    protected abstract void storeRunningJob(ProcessControllBlock job);
    protected abstract ProcessControllBlock getNextJob();
    protected abstract void insertProcess(ProcessControllBlock process);
    protected abstract void insertEmptyProcess(ProcessControllBlock process);

    ProcessControllBlock nextJob() {
        return getNextJob();
    }
}
